package com.itheima.d12_api_integer;

import java.util.ArrayList;

/*
    包装类
        包装类就是把基本类型的数据包装成对象。

    自动装箱：基本数据类型可以自动转换为包装类型。
    自动拆箱：包装类型可以自动转换为基本数据类型。

    包装类的其他常见操作
        可以把基本类型的数据转换成字符串类型。
        public static String toString(double d)
        public String toString()

        可以把字符串类型的数值转换成数值本身对应的数据类型。
        public static int parseInt(String s)
        public static Integer valueOf(String s)
 */
public class Test {
    public static void main(String[] args) {
        //旧版包装类，不推荐
        Integer i1 = new Integer(12);
        System.out.println(i1 instanceof Integer);

        //valuesOf ,推荐
        Integer i2 = Integer.valueOf(20);
        System.out.println(i2 instanceof Integer);

        //自动装箱：基本数据类型可以自动转化为包装类型
        Integer i3 = i2;
        System.out.println(i3);
        //自动拆箱
        int i4 = i2;
        System.out.println(i4);
        //泛型不支持基本数据类型，需要使用对应的包装类
        ArrayList<Integer> list = new ArrayList<>();
        list.add(20);//发生了自动装箱操作
        int  i = list.get(0);//发生自动拆箱的操作


        //基本数据类型转化成字符串两种方法
        //1.Objects提供的tostring()
        String s2 = Integer.toString(100);
        System.out.println(s2 instanceof String);

        //2.Integer提供的toString
        String s3 = i3.toString();
        System.out.println(s3 instanceof String);


        //字符串转化为基本数据类型 3种方法
        //1.第一种方法，简单粗暴
        String s4 = i4+"";
        System.out.println(s4 instanceof String);

        //2.Object的方法
        int i5 = Integer.parseInt("111");
        System.out.println(i5+1);

        //3.Integer本身的方法 valueOf()
        int i6 = Integer.valueOf("200");
        System.out.println(i6 +1);


    }



}
